import logging
from common.path_handle import Config



class MyLogger(object):
    """
    自定义日志类MyLogger，用于创建和管理日志记录器。
    该类旨在提供一个方便的接口，用于设置和获取配置了特定处理器和格式的日志记录器。
    """
    isinstance = None
    count = 0

    def __new__(cls, *args, **kwargs):
        """
        创建并初始化日志记录器。
        该方法会配置日志记录器，包括设置日志级别、处理器以及格式化器。
        返回：配置好的日志记录器实例。
        """
        # 创建日志记录器并设置级别为DEBUG
        mylog = logging.getLogger('DEBUG')
        mylog.setLevel('DEBUG')

        # 创建控制台处理器并设置级别为DEBUG
        sh = logging.StreamHandler()
        sh.setLevel('DEBUG')
        # 将控制台处理器添加到日志记录器中
        mylog.addHandler(sh)

        # 创建文件处理器并设置级别为DEBUG，同时指定日志文件路径和编码方式
        fh = logging.FileHandler(Config.log_path, encoding='utf8')
        fh.setLevel('DEBUG')
        # 将文件处理器添加到日志记录器中
        mylog.addHandler(fh)

        # 定义日志格式
        fmt = '%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s'
        formatter = logging.Formatter(fmt)
        # 为控制台处理器和文件处理器设置格式化器
        sh.setFormatter(formatter)
        fh.setFormatter(formatter)

        # 移除文件处理器和控制台处理器的过滤器（如果有的话）
        mylog.removeFilter(fh)
        mylog.removeFilter(sh)

        # 返回配置好的日志记录器实例
        return mylog

# 实例化日志记录器
mylog = MyLogger()

if __name__ == "__main__":
    mylog.info("ABCD")